2007. 3. <서울시스템(주) 한국학데이터베이스연구소 연구 개발 사업>


서울시스템의 ISO 10646 (유니 코드) 솔루션


김  현


  서울시스템은 漢文 資料 데이터베이스의 開發 경험을 토대로 韓國․中國․日本 등 漢文文化圈國家의 硏究者들이 東洋古典에 관한 각종 情報를 자유롭게 교환할 수 있도록 하는 韓․中․日 古典 資料 電算 處理 솔루션을 開發하고 있다.

  이 솔루션은 수년내에 세계 공통의 文字符號系로 정착될 ISO 10646 國際文字 符號系(유니 코드)를 기반으로 하되, 유니 코드에서 지원하지 못하는 漢字도 70,000 字까지 지원할 수 있도록 하고 있다. 또한 이 솔루션은 뿌리 入力法을 지원하는 데이터 入力․編輯 프로그램, 데이터베이스 CD-ROM 제작 시스템,  온라인 데이터베이스 제작 시스템 등을 포함하고 있다.


  1. ISO 10646 國際文字符號系를 채용한 이유


  ISO 10646이 東洋古典資料 電算化를 最適의 符號系라고 단언할 수는 없다. 그것은 단지 韓國․中國․日本의 현행 國家標準文字들을 하나의 符號系로 묶은 것에 불과하기 때문에 古典資料에 출현하는 漢字들을 포괄하고 있지는 않은 것이다. ISO 10646이 갖는 또 하나의 문제점은 각종 異體字의 處理에 대한 고려가 전혀 되어 있지 않다는 것이다. 韓國․中國․日本에서 사용하는 漢字 중에는 의미와 용례가 동일하면서 모양만 다른 글자들이 무수히 존재한다. 그런데 유니 코드는 이러한 文字들간의 내용적인 연계성을 도외시한 채 무조건 글자 모양이 다르면 별도의 코드 값을 갖도록 하였다. 이 때문에 中國大陸에서 사용하는 GB 코드의 簡體文字는 그와 상응하는 繁體文字의 存否에 관계 없이 중복해서 등록되어 있는 것이다. 이 점에서 볼 때 유니 코드의 CJK 文字(漢字)는 古典資料의 電算化에 국한하여 볼 경우 서울시스템의 統合漢字 코드나 美國 國會圖書館에서 만든 CJK 코드보다 훨씬 퇴행적인 것이라고 할 수 있다.

  그럼에도 불구하고 향후의 東洋古典資料 데이터베이스를 위한 데이터 제작이 基本的으로 이 유니 코드에 기반을 두어야 하는 이유는 그것이 바로 ‘국제적인 표준’이기 때문이다.  電算 분야에서의 ‘표준’은 단순히 공동의 約束 이상의 의미를 지닌다. 향후 범세계적으로 開發될 첨단 하드웨어와 소프트웨어는 모두 이 표준적인 約束을 준용할 것이기 때문에, 그 표준을 따르지 않으면 새로운 첨단 技術의 혜택을 받지 못하게 되는 것이다. 더군다나 東洋古典資料 데이터베이스 구축이 소수의 전문 硏究者들만을 위한 폐쇄적인 시스템을 開發하는 것이 아니고, 그 資料가 범세계적으로 공유될 수 있도록 하기 위한 것이라면  더더욱 이 표준을 외면해서는 안된다. 오늘날 인터넷이라고 하는 개방적인 情報 通信網이 전 세계를 한 집안처럼 묶어 주고 있지만, 이 인터넷의 세계에서 국경선이라고 하는 장벽의 제약없이 통용되는 情報는 사실상 英文字로 기록된 情報에 불과하다. 예컨대 韓國에서 日本의 대학이나 硏究機關에서 개설한 인터넷 홈페이지에 들어가 보면 文字 코드의 차이 때문에 그 내용을 열람할 수 없다. 거꾸로 日本에서 韓國의 사이트를 방문할 경우에도 상황은 마찬가지이다. 비전문가를 위한 자동 번역 프로그램이나 리얼 타임 코드 變換 프로그램이 있기는 하나, 이러한 것들은 정확한 資料를 주고 받아야 하는 學術적인 용도로는 사용할 수가 없다.

  현재 마이크로소프트의 Windows NT에 채택되어 있으며, 곧 이어 대부분의 컴퓨터 운영체제에 채택될 것으로 전망되는 유니 코드는 이러한 문제를 해결해 줄 것이다. 전 세계의 네티즌들이 표준화된 하나의 符號系를 사용하여 情報를 주고받음으로써 온라인 通信 상에서의 情報의 소실을 막을 수 있게 되는 것이다.

  남은 문제는 유니 코드를 채용하되, 유니 코드만으로 處理되지 않는 漢字 사용의 문제를 어떠한 방법으로 處理할 것인가 하는 것이다.


  2. 유니 코드 상에서의 擴張漢字 處理方法


  서울시스템의 東洋古典資料 電算 處理를 위한 符號系는  20,902 자의 CJK 漢字 및 11,170 자의 한글을 비롯하여 유니 코드에서 지원하는 모든 국자 文字를 사용하며, 이 외에 東洋古典資料 處理에 필요한 漢字들을 유니 코드의 사용자 정의 영역에 배치하여 사용하도록 설계되어었다.

  유니 코드의 사용자 정의 영역(Private Use Area)은  E0:00 - F8:FF 범위 내에서 모두 6,400 자의 文字를 쓸 수 있도록 되어 있다. 6,400 자는 결코 적은 수효가 아니며, 20,902 자의 CJK 漢字와 통합하여 쓸 경우 웬만한 東洋古典資料의 電算 入力이 가능할 것이다. 하지만 東洋古典文獻에 존재하였던 모든 漢字의 處理가 가능해야 하는 ‘漢字 辭典 데이터베이스’와 같은 시스템을 구현하고자 할 경우 이 영역은 터무니없이 모자라게 된다. 서울시스템의 유니 코드 擴張漢字 符號系에서는 ‘사용자 정의 영역’의 코드를 중첩하여 사용하는 방법으로  유니 코드의 2 바이트 정규 코드 文字 외에 70,000 자에 달하는 漢字를 追加로 사용할 수 있게 하였다. 즉, 허가된 文字 코드 영역은 6,400개에 불과하지만, 이 코드 영역을 중복하여 사용함으로써 10배 이상의 文字를 사용하게 한 것이다. 이때 코드 중복에서 오는 혼란을 막기 위해 데이터 入出力時에는 이 영역에 속하는 文字의 앞뒤에 文字의 擴張漢字群의 番號를 알려 주는 마크업 기호를 부가해 주도록 하였다. 이 마크업 기호는 서울시스템에서 제공하는 데이터 編輯機 또는 IME를 사용하여 데이터를 入力․編輯할 때 자동적으로 入力되며, 出力시에는 자동적으로 해당 폰트를 찾아 정확한 폰트 이미지를 보여 주게 된다.


  ① 유니 코드 擴張 漢字 基本 세트


     <十三經 引得>, <諸子百家 引得>, <朝鮮王朝實錄>, <高麗史>, <文科榜目>, <司馬榜目>, 등 中國 韓國의 古典 文獻에서 출현한 漢字 중 유니 코드 CJK 漢字에 포함되지 않은 漢字. 현재까지의 작업으로 예비 文字 5,500여 자가 엄선되었으며, 최대  6,400 자까지 擴張될 수 있다.


   - 코드 영역: E0:00 - F8:FF

   - 사용 방법: 마크업 생략.  2 바이트 코드의 직접 入出力


  ② 유니 코드 擴張 漢字 追加 세트


     日本 大修館의 <大漢和辭典>, 및 韓國 檀國大學校의 <漢韓辭典> 수록 漢字 65,000 자.


   - 코드 영역: E0:00 - F8:FF 중첩 사용

    ※ ISO 10646 코드 시스템에는 2 바이트 코드를 중첩하여 4 바이트 코드로 사용하도록 하기 위한 대용 코드 영역이 별도로 지정되어 있다. (Surrogate code points: D8:00-DB:FF (High), DC:00-DF:FF (Low)). 그러나 이 대용 코드 영역에서의 4 바이트 코드 입출력은 아직 O/S (MS Windows 등)상에서 지원되고 있지 않으며, 또한 비표준 문자의 가용 영역이 아니므로, 서울시스템의 유니 코드 擴張 漢字 追加 세트는 사용자 정의 문자 영역의 코드(E0:00 - F8:FF)를 중첩하여 쓰기로 하였다.


   - 사용 방법: 65,000 자를 6천여 자씩 10개의 구역으로 분할하여 구역 코드 부여.

     入出力시에 2 바이트 文字 코드의 앞 뒤에 구역 표시 마크업 기호 부가.


     예) 제 1 구역에 속하는 追加 漢字의 入力 마크업

         <x set=1>2 바이트 코드</x>

         제 9 구역에 속하는 追加 漢字의 入力 마크업

         <x set=9>2 바이트 코드</x>


  ③ 情報 檢索 엔진 상에서의 擴張 漢字 處理


  이상과 같은 같은 방법으로 擴張漢字를 符號化할 경우 윈시 데이터의 入力 編輯 및 出力에 아무런 문제가 없으나, 리얼 타임 情報 檢索을 위한 글자 단위 인덱스를 산출할 때에는  프로그램 구현이 어려워지는 문제점이 발생한다. 논리적인 文字列의 길이와 물리적인 바이트 수가 일치 하지 않기 때문에 檢索 알고리즘이 매우 복잡해지는 것이다. 서울시스템에서는 檢索 알고리즘의 구현을 용이하게 하기 위해 유니 코드 文字와 마크업된 擴張 漢字를 모두 4 바이트의 내부 코드(internal code)로 變換하여 인덱스 데이터를 생성하는 방법을 취하고 있다. 그러나 이 ‘4-bytes internal code’는 檢索 엔진의 내부에서만 사용하는 코드이며 원시 資料나 마스터 화일에는 나타나지 않는 것이므로 이용자들은 이 4 바이트 코드의 구조에 대해 에 대해 신경을 필요가 없다. 


  3. 서울시스템의 유니 코드 데이터  電算處理 솔루션


  서울시스템이 유니 코드를 기반으로 하여 東洋學資料를 電算化 할 수 있도록 하기 위한 솔루션의 요소 技術들은 아래와 같은 것들이다. 


  ① ISO 10646 CJK 漢字 FONT


  - 字種: ISO 10646 CJK 漢字 20,902 字 및 한글 11,170 字

  - 形式: 트루 타입(Windows NT 용), 포스크립트(고급 인쇄용)

  - 書體: 세명조, 세고딕, 중명조, 중고딕 등 19 종


  ② 擴張 漢字 FONT


   - 字種: 유니 코드 擴張漢字 基本 세트 및 追加 세트 (총 70,000여 자)

   - 形式: 트루 타입(Windows NT 용), 포스크립트(고급 인쇄용)

   - 書體: 명조, 고딕 2 종


  ③ 漢字 屬性辭典(DICTIONARY)


     유니 코드 및 擴張 基本 세트 전 文字에 대해 部首, 劃數, 讀音, 訓, 한어 병음, 뿌리 코드, 異體字 情報 등을 수록한 屬性辭典. 데이터 入力 프로그램에서 다양한 入力法을 제공하기 위해 만들어진 辭典이다.


  ④ 데이터 入力․編輯 시스템


     서울시스템의 DTP S/W PageStar 3.0의 入力 기능을 채용한 漢文 데이터 專門編輯機.  한글, 카나, 유니 코드 漢字 및 擴張 漢字 基本 세트와 追加 세트의 入力 및  編輯 기능을 제공한다.


   - 데이터 入力 방식


   . 유니 코드 및 擴張 漢字 基本 세트 .... 뿌리 入力法, 部首-劃數入力法, 音變換入力法(한글 음 및 中國 병음), 語彙變換入力法 지원


   . 擴張 漢字 追加 세트 .... 部首-劃數入力法 지원


   - 데이터 變換 기능


   . 韓․中․日 國家 코드 相互變換 및 유니 코드 變換


   . 韓․中․日 異體字 變換 기능

    (繁體 ↔ 簡體, 繁體 ↔ 日本漢字, 簡體 ↔ 日本漢字 등)


  ⑤ CJK 擴張漢字 INPUT METHOD ENVIRONMENT


     마이크로소프트 윈도우 NT 상에서 유니 코드 CJK 漢字 및 擴張漢字를 入出力할 수 있도록 하는 시스템 소프트웨어.  데이터 編輯機와 동일한 入力 기능을 제공한다.


  ⑥ 유니 코드 데이터  檢索 엔진


     유니코드와 擴張漢字로 이루어진 漢文資料의 데이터 檢索 기능 지원을 위한 檢索 엔진, 語彙 단위 檢索 기능과 文字 단위 檢索 기능을 지원한다.  마크업된 데이터 화일로부터 리얼 타임 檢索을 위한 索引을 생성해 내는 ‘PRODUCER’와  데이터 화일과 索引 화일을 참조하여 이용자가 요구하는 檢索 결과를 산출해 내는 ‘NEVIGATOR’로 구성되어 있으며, NEVIGATOR는 CD-ROM 檢索에 사용하는 프로그램(CD SEARRCH)과 ON-LINE 檢索을 위한 프로그램(WEB SEARCH) 2 종류가 있다.


  4. 유니 코드 솔루션의 應用


  서울시스템이 마련한 이상과 같은 요소 技術들은 韓國의 古典資料뿐 아니라 中國․日本의 漢文 古典과 현대의 學術硏究資料들을 종합적으로 집대성한 데이터베이스를 開發하여 이를 국제적으로 활용할 수 있는 길을 여는 데 사용될 것이다.  서울시스템이 유니코드 擴張漢字의 追加文字 세트를 선정함에 있어  日本의 <大漢和辭典>의 漢字 배열을 채용한 것은 이 辭典이 오늘날의 東洋學 硏究者들에게 가장 基本적인 레퍼런스로 사용되고 있기 때문이다. 현재까지는 유니 코드 시스템과 병용할 수 있는 漢字 擴張법에 대해 국제적인 콘센서스가 형성되어 있기 때문에 서울시스템이 독자적으로 그 방안을 마련하였지만, 이 문제에 관해 中國이나 日本의 東洋學 硏究者들의 바람직한 제안이 있을 경우 서울시스템은 그것을 적극적으로 반영하여 현재의 솔루션을 발전시켜 나아갈 계획이다.